home *** CD-ROM | disk | FTP | other *** search
- ' $INCLUDE: 'DOORPCH.USR'
-
- PROGNAME$ = "Example" ' These
- PROGB$ = "EXAMPLE" ' four
- R.ELEASE$ = "v3.8" ' MUST
- NODE% = YES ' be populated.
-
- NO.DISPLAY.OFF% = NO ' These
- ANSI.MUSIC% = NO ' six
- ANSI.COLOR% = YES ' variables
- ANSI% = YES ' may
- EXTRA% = NO ' be
- DOORPCH.SCORES% = 1 ' populated.
-
- ' $INCLUDE: 'DOORPCH.BEG' ' CALLs INITIALIZATION code in DORPCH38.EXE
- CLOSE #1 ' If you had other information within
- ' EXAMPLE.CFG, you would continue reading
- ' the file here then CLOSE #1.
-
- ' Asks if caller wants to use an alias and what it is.
- 100 CALL ALIAS
- CALL CLR.SCRN
- XPOS% = 5: YPOS% = 1: CALL OUT.PUT
- FGC% = MAGENTA: TBSN% = 21: BLINK% = YES: LN$ = "DOORPCH "+R.ELEASE$: CALL OUT.NCR
- FGC% = GREEN: LN$ = " example brought to you by": CALL OUT.PUT
- FGC% = GREEN: CENTER% = YES: LN$ = "SysOp: " + SYSFIRST$ + " " + SYSLAST$ + " of " + SYSNAME$
- LN$ = LN$ + ", a " + BBSSYS$ + " BBS": CALL OUT.PUT
- CALL OUT.PUT
- FGC% = GREEN: CENTER% = YES: LN$ = "You are about to have a visual demonstration": CALL OUT.PUT
- FGC% = GREEN: CENTER% = YES: LN$ = "of the capabilities of DOORPCH " + R.ELEASE$ + " (DOOR PATCH)": CALL COLOR.CHK: CALL OUT.PUT
- FGC% = GREEN: CENTER% = YES: LN$ = "DOORPCH is simply the BEST door code available": CALL OUT.PUT
- FGC% = RED: BLINK% = YES: CENTER% = YES: LN$ = "PERIOD!": CALL OUT.PUT
- FGC% = GREEN: CENTER% = YES: LN$ = "Many more capabilities exist than displayed here": CALL OUT.PUT
- FGC% = GREEN: CENTER% = YES: LN$ = "Give it a whirl. If you find a function not yet": CALL OUT.PUT
- FGC% = GREEN: CENTER% = YES: LN$ = "provided by DOORPCH, simply contact Raymond Clements,": CALL OUT.PUT
- FGC% = GREEN: CENTER% = YES: LN$ = "SysOp of The Pegasus BBS at (502)684-9871 HST about it . . .": CALL OUT.PUT
- CALL OUT.PUT
- CALL ENTER
- 120 DO
- CALL CLR.SCRN
- FGC% = MAGENTA: LN$ = "Example DOOR Menu": CENTER% = YES: CALL OUT.PUT
- FGC% = WHITE: LN$ = "=================": CENTER% = YES: CALL OUT.PUT
- XPOS% = 5: YPOS% = 1: FGC% = GREEN: LN$ = "Select one of the following examples:": CALL OUT.PUT
- CALL OUT.PUT
- FGC% = CYAN: LN$ = "[0] - Page SysOp": CALL COLOR.CHK: CALL OUT.PUT
- FGC% = CYAN: LN$ = "[1] - Music Output": CALL COLOR.CHK: CALL OUT.NCR
- IF LOCAL.MUSIC% = NO THEN LN$ = ", unavailable in LOCAL mode"
- CALL OUT.PUT
- FGC% = CYAN: LN$ = "[2] - Screen Positioning": CALL COLOR.CHK: CALL OUT.PUT
- FGC% = CYAN: LN$ = "[3] - High Scores": CALL COLOR.CHK: CALL OUT.PUT
- FGC% = CYAN: LN$ = "[4] - Centering output": CALL COLOR.CHK: CALL OUT.PUT
- FGC% = CYAN: LN$ = "[5] - SUBS: COLOR.CHK, GET.KEY, GET.KEYECHO,": CALL COLOR.CHK: CALL OUT.PUT
- FGC% = CYAN: LN$ = " GET.KEYS(##), IN.PUT, OUT.PUT and ENTER": CALL OUT.PUT
- FGC% = CYAN: LN$ = "[6] - Cursor positioning with SUB GET.KEY": CALL COLOR.CHK: CALL OUT.PUT
- FGC% = CYAN: LN$ = "[7] - Read Graphics files / menus from disk": CALL COLOR.CHK: CALL OUT.PUT
- FGC% = CYAN: LN$ = "[8] - Make those fancy prompts": CALL COLOR.CHK: CALL OUT.PUT
- FGC% = CYAN: LN$ = "[9] - Quit and Return to "+BBSSYS$: CALL COLOR.CHK: CALL OUT.PUT
- FGC% = CYAN: LN$ = "[10] - Goodbye and Hang-up": CALL COLOR.CHK: CALL OUT.PUT
- CALL OUT.PUT
- FGC% = GREEN: LN$ = "(" + MID$(STR$(DMIN%),2) + " min. left) Enter Selection, " + FIRST$ + " ? ": CALL COLOR.CHK: CALL IN.PUT
- IF ARG$ = "" THEN GOTO 120
- SEL% = VAL(ARG$)
- SELECT CASE SEL%
- CASE 9 TO 10
- CALL CLR.SCRN
- FGC% = RED: CENTER% = YES: LN$ = "Thanks for testing " + PROGNAME$: CALL OUT.PUT
- FGC% = GREEN: CENTER% = YES: LN$ = "Now try your hand at writing DOORs": CALL OUT.PUT
- FGC% = YELLOW: CENTER% = YES: LN$ = "It's really very easy as you can see": CALL OUT.PUT
- CALL OUT.PUT
- FGC% = CYAN: CENTER% = YES: LN$ = "DOORPCH " + R.ELEASE$ + " Authors:": CALL OUT.PUT
- CALL OUT.PUT
- FGC% = YELLOW: CENTER% = YES: LN$ = "Raymond Clements": CALL OUT.PUT
- FGC% = YELLOW: CENTER% = YES: LN$ = "Clint Labarthe, Terry Shockley, and Ben Perron": CALL OUT.PUT
- FGC% = GREEN: CENTER% = YES: LN$ = "Assembler programming by Harold Thomson": CALL OUT.PUT
- EXIT DO
- CASE 0 TO 8
- ON SEL% + 1 GOSUB 1000, 1100, 1200, 1300, 1400, 1500, 1600, 1700, 1800
- CASE ELSE
- END SELECT
- LOOP UNTIL SEL% > 8
- ' END OF MAIN LOOP
- IF SEL% = 10 THEN CALL HANGUP ' Disconnect caller without returning to the BBS
- CALL EXITG ' Never come back. DOOR terminates in DOORPCH code
-
- ' Page the SysOp
- 1000 CALL SYSOP.PAGE
- RETURN
-
- ' Music example
- 1100 CALL CLR.SCRN
- FGC% = MAGENTA: CENTER% = YES: LN$ = "Music Output Example": CALL OUT.PUT
- FGC% = WHITE: CENTER% = YES: LN$ = "====================": CALL OUT.PUT
- CALL OUT.PUTS(2)
- FGC% = GREEN: LN$ = "Can your system handle music [y/N] ? ": CALL COLOR.CHK: CALL GET.KEYS(1)
- IF ARG$ <> "Y" THEN RETURN
- CALL OUT.PUT
- LN$ = "ALOYTTE": CALL OUT.PUT
- MUSIC$ = "L4E.L8F#L4G#G#L8F#EF#G#L4EO1BO2E.L8F#L4G#G#L8F#EF#G#L2EL8EF#G#ABBL4BL8BO3C#O2BAG#F#L4EL8BBL4BO1L8BBL4BO2L8BBL4BO1L8BBL4BO2L1BL4E.L8F#L4G#G#L8F#EF#G#L4EO1BO2E.L8F#L4G#G# L4F#EF#G#L2E"
- CALL MUSICG
- CALL OUT.PUTS(2)
- CALL ENTER
- CALL OUT.PUT
- IF ARG$ <> "N" THEN
- LN$ = "TOM DOOLEY": CALL OUT.PUT
- MUSIC$ = "L4DDEGBL2BL4BDDEGL1AL4DDEGAL2A.L8AAAAL4GEL2G.P4L8DL4DL8DL4EGL2BBL8DL4DL8EL4GL1AL8DL4DL8DL4EGL2AAL8AL4AL8BL4GEL2G"
- END IF
- CALL MUSICG
- CALL OUT.PUT
- CALL ENTER
- RETURN
-
- ' Screen Positioning Example
- 1200 CALL CLR.SCRN
- FGC% = MAGENTA: CENTER% = YES: LN$ = "ANSI Screen Positioning Example": CALL OUT.PUT
- FGC% = WHITE: CENTER% = YES: LN$ = "===============================": CALL OUT.PUT
-
- ' The right side of the box
- 1210 FOR X = 16 TO 4 STEP -1
- XPOS% = X: YPOS% = 3: LN$ = CHR$(186): CALL OUT.NCR
- NEXT X
-
- ' The corner of the box left top
- XPOS% = 3: YPOS% = 3: LN$ = CHR$(201): CALL OUT.NCR
-
- ' The top of the box
- FOR X = 4 TO 77
- XPOS% = 3: YPOS% = X: LN$ = CHR$(205): CALL OUT.NCR
- NEXT X
-
- ' top right corner
- XPOS% = 3: YPOS% = 78: LN$ = CHR$(187): CALL OUT.NCR
-
- ' right side
- FOR X = 4 TO 16
- XPOS% = X: YPOS% = 78: LN$ = CHR$(186): CALL OUT.NCR
- NEXT X
-
- ' The bottom right side corner
- XPOS% = 17: YPOS% = 78: LN$ = CHR$(188): CALL OUT.NCR
-
- ' The bottom of the box
- FOR X = 77 TO 4 STEP -1
- XPOS% = 17: YPOS% = X: LN$ = CHR$(205): CALL OUT.NCR
- NEXT X
-
- ' left side corner bottom
- YPOS% = 3: XPOS% = 17: LN$ = CHR$(200): CALL OUT.NCR
- XPOS% = 18: YPOS% = 1: CALL OUT.PUT
- IF SEL% = 2 THEN
- XPOS% = 9: YPOS% = 20: FGC% = MAGENTA ' Set coordinates and magenta color
- LN$ = "Almost anything is possible with ": CALL OUT.NCR
- FGC% = WHITE: LN$ = "DOORPCH !": CALL OUT.PUT
- XPOS% = 19: YPOS% = 1: CALL OUT.NCR
- CALL ENTER
- END IF
- RETURN
-
- ' High Scores Example
- 1300 CALL CLR.SCRN
- FGC% = WHITE: CENTER% = YES: LN$ = "High Scores Example": CALL OUT.PUT
- CENTER% = YES: LN$ = "===================": CALL OUT.PUT
- CALL OUT.PUT
- FGC% = MAGENTA: BLINK% = YES: LN$ = "Selecting a score randomly . . .": CALL OUT.NCR
- HSCR# = INT(RND * 1000) + 1
- LN$ = " the score selected is " + STR$(HSCR#): CALL OUT.PUT
- CALL OUT.PUT
- CALL HIGH.SCORE
- RETURN
-
- ' Centering example
- 1400 CALL CLR.SCRN
- XPOS% = 10: YPOS% = 1 ' Row 10, Column 01
- CENTER% = YES: LN$ = "This text is centered": CALL OUT.PUT
- CALL OUT.PUT
- CALL ENTER
- RETURN
-
- 1500 CALL CLR.SCRN
- ' Example of how SUB COLOR.CHK and SUB GET.KEYS(##) operates
- 1501 FGC% = CYAN: LN$ = "This example requires pressing RETURN": CALL OUT.PUT
- CALL OUT.PUT
- FGC% = MAGENTA: BLINK% = YES: LN$ = "Selecting number of characters randomly . . .": CALL OUT.NCR
- NUM.KEYS% = INT(RND * 79) + 1
- LN$ = " the number selected is " + STR$(NUM.KEYS%): CALL OUT.PUT
- CALL OUT.PUT
- FGC% = GREEN: LN$ = "Enter (P)lay, (Q)uit or (C)ontinue ? ": CALL COLOR.CHK: CALL GET.KEYS(NUM.KEYS%)
- IF ARG$ = "P" OR ARG$ = "Q" OR ARG$ = "C" THEN ELSE GOTO 1501
- CALL OUT.PUTS(2)
- FGC% = MAGENTA: LN$ = "In this case ARG$ equals " + "[" + ARG$ + "]": CALL COLOR.CHK: CALL OUT.PUT
- CALL OUT.PUT
- CALL ENTER
-
- ' Example of how SUB COLOR.CHK and SUB IN.PUT operates
- 1502 FGC% = CYAN: LN$ = "This example requires pressing RETURN": CALL OUT.PUT
- CALL OUT.PUT
- FGC% = YELLOW: LN$ = "It also": CALL OUT.NCR
- FGC% = RED: LN$ = " ECHO's ": CALL OUT.NCR
- FGC% = YELLOW: LN$ = "the character": CALL OUT.PUT
- CALL OUT.PUT
- FGC% = GREEN: LN$ = "Enter (P)lay, (Q)uit or (C)ontinue ? ": CALL COLOR.CHK: CALL IN.PUT
- IF ARG$ = "P" OR ARG$ = "Q" OR ARG$ = "C" THEN ELSE GOTO 1502
- CALL OUT.PUTS(2)
- FGC% = MAGENTA: LN$ = "In this case ARG$ equals " + "[" + ARG$ + "]": CALL COLOR.CHK: CALL OUT.PUT
- CALL OUT.PUT
- CALL ENTER
-
- ' Example of how SUB COLOR.CHK and SUB GET.KEYECHO operates
- 1503 CALL CLR.SCRN
- FGC% = CYAN: LN$ = "You can also get a character WITHOUT a RETURN": CALL OUT.PUT
- CALL OUT.PUT
- FGC% = YELLOW: LN$ = "It also": CALL OUT.NCR
- FGC% = RED: LN$ = " ECHO's ": CALL OUT.NCR
- FGC% = YELLOW: LN$ = "the character": CALL OUT.PUT
- CALL OUT.PUT
- FGC% = GREEN: LN$ = "Enter (P)lay, (Q)uit or (C)ontinue ? ":CALL COLOR.CHK: CALL GET.KEYECHO
- IF ARG$ = "P" OR ARG$ = "Q" OR ARG$ = "C" THEN ELSE GOTO 1503
- CALL OUT.PUTS(2)
- FGC% = MAGENTA: LN$ = "In this case ARG$ equals " + "[" + ARG$ + "]": CALL COLOR.CHK: CALL OUT.PUT
- CALL OUT.PUT
- CALL ENTER
-
- ' Example of how SUB COLOR.CHK and SUB GET.KEY operates
- 1504 CALL CLR.SCRN
- FGC% = CYAN: LN$ = "This example does NOT require pressing RETURN": CALL OUT.PUT
- CALL OUT.PUT
- FGC% = YELLOW: LN$ = "It also": CALL OUT.NCR
- FGC% = RED: LN$ = " DOES NOT ECHO ": CALL OUT.NCR
- FGC% = YELLOW: LN$ = "the character": CALL OUT.PUT
- CALL OUT.PUT
- FGC% = GREEN: LN$ = "Enter (P)lay, (Q)uit or (C)ontinue ? ":CALL COLOR.CHK: CALL GET.KEY
- IF ARG$ = "P" OR ARG$ = "Q" OR ARG$ = "C" THEN ELSE GOTO 1504
- CALL OUT.PUTS(2)
- FGC% = MAGENTA: LN$ = "In this case ARG$ equals " + "[" + ARG$ + "]": CALL COLOR.CHK: CALL OUT.PUT
- CALL OUT.PUT
- CALL ENTER
-
- ' Example of how SUB COLOR.CHK, SUB IN.PUT AND RETURNCASE% operates
- 1505 CALL CLR.SCRN
- FGC% = CYAN: LN$ = "This example requires pressing RETURN": CALL OUT.PUT
- CALL OUT.PUT
- FGC% = YELLOW: LN$ = "It also": CALL OUT.NCR
- FGC% = RED: LN$ = " ECHO's ": CALL OUT.NCR
- FGC% = YELLOW: LN$ = "the character": CALL OUT.PUT
- CALL OUT.PUT
- FGC% = WHITE: LN$ = "Oh so you expect LOWER case ?": CALL OUT.PUT
- CALL OUT.PUT
- FGC% = GREEN: RETURNCASE% = -1: LN$ = "Enter (P)lay, (Q)uit or (C)ontinue ? ": CALL COLOR.CHK: CALL IN.PUT
- IF ARG$ = "p" OR ARG$ = "q" OR ARG$ = "c" THEN ELSE GOTO 1505
- CALL OUT.PUTS(2)
- FGC% = MAGENTA: LN$ = "In this case ARG$ equals " + "[" + ARG$ + "]": CALL COLOR.CHK: CALL OUT.PUT
- CALL OUT.PUT
- CALL ENTER
- CALL CLR.SCRN
- XPOS% = 9: YPOS% = 10: FGC% = CYAN: LN$ = "So you want more than one ": CALL OUT.NCR
- FGC% = YELLOW: LN$ = "color": CALL OUT.NCR
- FGC% = CYAN: LN$ = " on same line, and a BELL too!": BELL% = YES: CALL OUT.PUT
- CALL OUT.PUTS(2)
- CALL ENTER ' Gives the caller an ENTER prompt
- RETURN
-
- ' Example of Cursor positioning with SUB GET.KEY
- 1600 CALL CLR.SCRN
- FGC% = MAGENTA: CENTER% = YES: LN$ = "ANSI Cursor Positioning Example": CALL OUT.PUT
- FGC% = WHITE: CENTER% = YES: LN$ = "===============================": CALL OUT.PUT
- GOSUB 1210
- BOUNDLEFT% = 4
- BOUNDRIGHT% = 77
- BOUNDBOTTOM% = 16
- BOUNDTOP% = 4
- XPOS% = 18: YPOS% = 1: CENTER% = YES: LN$ = "Press NUM-LOCK then press": CALL OUT.PUT
- CENTER% = YES: LN$ = "(8) for UP, (6) for RIGHT, (2) for DOWN and (4) for LEFT": CALL COLOR.CHK: CALL OUT.PUT
- CENTER% = YES: LN$ = "(5) to EXIT, <ENTER> to place an `X'": CALL COLOR.CHK: CALL OUT.PUT
- XPOS% = 21: YPOS% = 1: CALL OUT.PUT
- CALL ENTER
- XPOS% = 8: TEMPX% = XPOS%: YPOS% = 39: TEMPY% = YPOS%: CALL OUT.NCR
- 1610 DO
- CALL GET.KEY
- SELECT CASE ARG$
- CASE "8"
- TEMPX% = TEMPX% - 1
- GOSUB RANGE
- CASE "6"
- TEMPY% = TEMPY% + 1
- GOSUB RANGE
- CASE "2"
- TEMPX% = TEMPX% + 1
- GOSUB RANGE
- CASE "4"
- TEMPY% = TEMPY% - 1
- GOSUB RANGE
- CASE "5" 'Just a place to end this routine for testing
- EXIT DO
- CASE ELSE
- IF ARG$ = CHR$(13) THEN
- XPOS% = TEMPX%: YPOS% = TEMPY%: LN$ = "X": CALL OUT.NCR
- XPOS% = TEMPX%: YPOS% = TEMPY%: LN$ = "": CALL OUT.NCR
- END IF
- END SELECT
- LOOP
- RETURN
- RANGE:
- IF TEMPY% > BOUNDRIGHT% THEN TEMPY% = 4
- IF TEMPY% < BOUNDLEFT% THEN TEMPY% = 77
- IF TEMPX% > BOUNDBOTTOM% THEN TEMPX% = 4
- IF TEMPX% < BOUNDTOP% THEN TEMPX% = 16
- XPOS% = TEMPX%: YPOS% = TEMPY%: LN$ = "": CALL OUT.NCR
- RETURN
-
- ' Example of how to Read Graphics files / menus from disk
- 1700 CALL CLR.SCRN
- CENTER% = YES: LN$ = "You can even read graphics screens or menus from disk!": CALL OUT.PUT
- CALL READ.TXT("EXAMPLE.ANS","EXAMPLE.ASC")
- CALL ENTER
- RETURN
-
- ' Example of how to Make those fancy prompts
- 1800 CALL CLR.SCRN
- CENTER% = YES: LN$ = "You can now make those fancy prompts without getting a headache. . .": CALL OUT.PUT
- XPOS% = 5: YPOS% = 1: CENTER% = YES: FGC% = GREEN: LN$ = "[T]rains, [P]lanes and [A]utomobiles": CALL COLOR.CHK: CALL OUT.PUT
- CALL OUT.PUT
- CENTER% = YES: FGC% = WHITE: LN$ = "or ....": CALL OUT.PUT
- XPOS% = 9: YPOS% = 1: CENTER% = YES: FGC% = CYAN: LN$ = "Select a category: <a,b,c,d> or [q]uit or <Q>uit or [1,2,3,Q,g,x]": CALL COLOR.CHK: CALL OUT.PUT
- CALL OUT.PUT
- CENTER% = YES: FGC% = WHITE: LN$ = "or ....": CALL OUT.PUT
- FGC% = YELLOW: XPOS% = 13: YPOS% = 1: CENTER% = YES: LN$ = "<CAPITAL LETTERS get one color, 123456 get another, lower case another>": CALL COLOR.CHK: CALL OUT.PUT
- CALL OUT.PUTS(2)
- XPOS% =18: YPOS% = 29: FGC% = MAGENTA: LN$ = "DOORPCH makes it ": CALL OUT.NCR
- BLINK% = YES: FGC% = MAGENTA: LN$ = "easy!": CALL OUT.PUT
- CALL OUT.PUT
- XPOS% =23: YPOS% = 1: CALL ENTER
- RETURN
-
- ' $INCLUDE: 'DOORPCH.END'
-